// 《围棋》作者版权所有。版权所有。
// 此源代码的使用受BSD样式
// 许可证的约束，该许可证可以在许可证文件中找到。

// 包sysinfo实现高级硬件信息收集
// 可用于调试或信息目的。
package sysinfo

import (
	internalcpu "internal/cpu"
	"sync"
)

type cpuInfo struct {
	once sync.Once
	name string
}

var CPU cpuInfo

func (cpu *cpuInfo) Name() string {
	cpu.once.Do(func() {
		// 尝试从内部/cpu获取信息。
		if name := internalcpu.Name(); name != "" {
			cpu.name = name
			return
		}
		// TODO（martisch）：在Linux上使用/proc/cpuinfo和/sys/devices/system/cpu/作为备用。
	})
	return cpu.name
}
